home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 142
/
Gekkan Dennou Club - 2000.3 Vol. 142 (Japan).7z
/
Gekkan Dennou Club - 2000.3 Vol. 142 (Japan) (Track 1).bin
/
tools
/
s_tool
/
scsic.s
< prev
next >
Wrap
Text File
|
1996-05-16
|
2KB
|
132 lines
.include TNB.MAC
.include IOCSCALL.MAC
*
*_S_COMMAND( ID , COMLONG , COM , OUTDATALONG , OUTDATA , INDATALONG , INDATA );
* int ID;
* int COMLONG;
* char* COM;
* int OUTDATALONG;
* char* OUTDATA;
* int INDATALONG;
* char* INDATA;
*
* msgin error = -1
* stsin error = -2
* cmdout error = -3 (datain/out 含む)
* select error = -4
*
* LUN 対策してません!
*
.offset 8
ID: .ds.l 1
ComLong: .ds.l 1
ComAdd: .ds.l 1
OutDataLong: .ds.l 1
OutDataAdd: .ds.l 1
InDataLong: .ds.l 1
InDataAdd: .ds.l 1
.text
.globl _S_COMMAND
_S_COMMAND:
link a6,#-4
movem.l d3-d6/a1,-(sp)
move.l ID(a6),d4 * d4 = ID
SCSI _S_SELECT * Selection
tst.l d0
bne _scme4 * select error
move.l ComLong(a6),d3 * Command Long
movea.l ComAdd(a6),a1 * Command Adds
SCSI _S_CMDOUT * Command Out
tst.l d0
bne _scme3 * cmdout error
move.l OutDataLong(a6),d3 * OutDataあり?
tst.l d3
beq 1f
*======DataOut
*move.l OutDataLong(a6),d3 * OutData Long
movea.l OutDataAdd(a6),a1 * OutData Adds
SCSI _S_DATAOUT_P * OutData OUT
tst.l d0
bne _scm4
1:
move.l InDataLong(a6),d3 * InDataあり?
tst.l d3
beq 1f
*======DataOut
*move.l InDataLong(a6),d3 * InData Long
movea.l InDataAdd(a6),a1 * InData Adds
SCSI _S_DATAIN_P * InData OUT
tst.l d0
*bne _scm4
1:
_scm4: *======ステイタス&メッセージチェック
lea -1(a6),a1
SCSI _S_STSIN
tst.l d0
bne _scme2
lea -3(a6),a1
SCSI _S_MSGIN
tst.l d0
bne _scme1
*======STS,MSG の整理 (戻り値)
moveq #0,d0
move.b -3(a6),d0
asl.l #8,d0
moveq #0,d1
move.b -1(a6),d1
add.l d1,d0
bra _scm1
_scme1: *======エラー値 (戻り値)
moveq #-1,d0
bra _scm1
_scme2: *======エラー値 (戻り値)
moveq #-2,d0
bra _scm1
_scme3: *======エラー値 (戻り値)
moveq #-3,d0
bra _scm1
_scme4: *======エラー値 (戻り値)
moveq #-4,d0
_scm1:
movem.l (sp)+,d3-d6/a1
unlk a6
rts
*___S_MODESENSE equ $29 * undefined
*___S_MODESELECT equ $2A * undefined
.globl _SCSI_MODESELECT
_SCSI_MODESELECT:
movem.l d3-d4,-(sp)
move.l $000c(sp),d2
moveq #$00,d3
move.w $0012(sp),d3
move.l $0014(sp),d4
movea.l $0018(sp),a1
SCSI _S_MODESELECT
movem.l (sp)+,d3-d4
rts
.globl _SCSI_MODESENSE
_SCSI_MODESENSE:
movem.l d3-d4,-(sp)
move.l $000c(sp),d2
moveq #$00,d3
move.w $0012(sp),d3
move.l $0014(sp),d4
movea.l $0018(sp),a1
SCSI _S_MODESENSE
movem.l (sp)+,d3-d4
rts